package com.liming.common.util.mybatisplus;


import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.liming.common.exception.PageException;
import com.liming.common.pojo.dto.PageDTO;

/**
 * @author liming
 * @date 2025/1/9
 */
public interface MPUtil<T> {

    /**
     * 设置分页
     *
     * @param pageDTO 分页参数
     * @return IPage对象
     */
    default IPage<T> setPage(PageDTO pageDTO) {
        Assert.notNull(pageDTO, () -> new PageException("分页参数不能为空"));
        int current = pageDTO.getCurrent();
        int size = pageDTO.getSize();
        // 边界条件检查
        if (current <= 0) {
            throw new PageException("当前页码必须大于0");
        }
        if (size <= 0) {
            throw new PageException("每页大小必须大于0");
        }
        return new Page<T>(current, size);
    }

    /**
     * 获取查询条件
     *
     * @return LambdaQueryWrapper对象
     */
    default LambdaQueryWrapper<T> getLQW() {
        return new LambdaQueryWrapper<>();
    }


}
